home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / lollipop / lollipop.hqx / Lollipop Manual / comm.tex < prev    next >
Text File  |  1992-11-19  |  21KB  |  598 lines

  1. % Comm.tex copyright 1992 Victor Eijkhout
  2. %
  3. \Chapter Commands
  4.  
  5. \Section[sec:counters] Counters
  6.  
  7. Counters can be declared explicitly by the user, but more often they
  8. are defined automatically in some generic construct:
  9.  
  10. The \cs{Foo} defined by 
  11. \Ver>\DefineBar:Foo ... 
  12.     counter:i ...
  13.     Stop<Rev
  14.  
  15. will have a counter that counts in roman lowercase, and which is
  16. accessible as \refcs{FooCounter}. Everytime \cs{Foo} is used, this
  17. counter is increased by one.
  18.  
  19. The use of the \opt{counter} option is described
  20. in~\ref[sec:opt:counter].
  21. Here are the commands for explicit manipulation of counters.
  22.  
  23. \SubSection[sec:counter:repr] Allocation and representation
  24.  
  25. A counter is created by for instance
  26. \Ver>\NewCounter:Things<Rev
  27. This will create control sequence \cs{ThingsCounter} that will print
  28. the value of the counter.
  29. The counter will usually be printed as an Arabic numeral, but other
  30. counter representations can be specified by
  31. \refcs{CounterRepresentation}. Here are their codes: \Description
  32. \item 1
  33. numeric
  34. \item a
  35. lowercase character
  36. \item A
  37. uppercase character
  38. \item i
  39. lowercase roman
  40. \item I
  41. lowercase roman
  42. \>
  43. for instance
  44. \Ver>\CounterRepresentation:Things=i<Rev
  45. will cause \cs{ThingsCounter} to print a lowercase Roman numeral.
  46.  
  47. However, a call such as
  48. \Ver>\CounterRepresentation:Theorem=Lemma<Rev
  49. will make the \cs{TheoremCounter} a synonym of an earlier created
  50. \cs{LemmaCounter}
  51.  
  52. \SubSection Counter manipulation
  53.  
  54. The following commands can be used to manipulate counters, both when
  55. they are created by hand using \refcs{NewCounter} and when they were
  56. generated automatically in some generic construct:
  57.  
  58. Reset the counter to one:
  59. \Ver>\StartCounter:things<Rev
  60.  
  61. Increase the counter by one:
  62. \Ver>\StepCounter:things<Rev
  63.  
  64. Decrease the counter by one:
  65. \Ver>\BackStepCounter:things<Rev
  66.  
  67. Set the counter to some specified value
  68. \Ver>\SetCounter:things=5<Rev
  69.  
  70. \SubSection Counter hierarchies
  71.  
  72. Often counters are related to each other. For instance, when a new
  73. section begins, the subsection counter has to be reset. The same may
  74. be true for equation counters. In Lollipop such a relation is
  75. indicated by a call to \refcs{GoverningCounter}, for instance
  76.  
  77. \Ver>\GoverningCounter:SubSection=Section<Rev
  78.  
  79. All of the counter manipulation commands applied to a governing
  80. counter will cause all governed counters to be reset. Such a reset
  81. also occurs if the counter was created in some generic construct.
  82.  
  83. For examples, see section~\ref[sec:head:examples].
  84.  
  85. \SubSection Referencing counters
  86.  
  87. All counters that are declared as part of a generic construct, or
  88. explicitly through \refcs{NewCounter} automatically become the current
  89. reference when they are altered. Thus \ver>\label[bar]> will make
  90. \ver>\ref[bar]> refer to the value of the counter most recently
  91. changed. The way the counter is referenced can be altered by the
  92. \opt{label} option in generic constructs; see
  93. section~\ref[sec:opt:label].
  94.  
  95. For generic constructs with a counter no explicit \refcs{label} commands
  96. need to be given; such commands take an optional argument with the
  97. label key:
  98. \Ver>\Section[sec:examples] Examples<Rev
  99.  
  100.  
  101. \SubSection Examples of counter usage
  102.  
  103. Items start at the value of one, so if a starting value of zero is
  104. necessary, the following will work
  105. \Ver>
  106. \Enumerate \SetCounter:item=-1
  107. \item ...<Rev
  108.  
  109.  
  110. \ImpNote
  111.  
  112. \iSection The counter name
  113.  
  114. The \cs{count} register associated with a counter receives an internal
  115. name:
  116. \Ver>\def\counter@name#1{#1@C}<Rev
  117.  
  118. Also the following common abbreviations are provided:
  119. \Ver>
  120. \def\cs@counter@name#1{\csname#1@C\endcsname}
  121. \def\counter@@name#1{\CSname{#1@C}}<Rev
  122.  
  123. \iSection Allocation and representation
  124.  
  125. The user command \refcs{NewCounter} allocates a counter plus an
  126. associated `reset list':
  127. \Ver>
  128. \def\NewCounter:#1 {
  129.     \csarg\newtoks{#1@RL}
  130.     \csn #1@RL\ecs={}
  131.     \new@counter{#1}
  132.     }
  133. \def\new@counter#1{
  134.     \new@@counter{#1}
  135.     \CounterRepresentation:{#1}=1
  136.     \StartCounter:{#1}
  137.     }
  138.  
  139. \def\CounterRepresentation:#1=#2 {
  140.     \if\UndefinedCS{\counter@name{#2}}%is deze teller een synoniem?
  141.           \represent@counter{#1}{#2}
  142.     \else \@SynonymCounter{#1}{#2}
  143.     \fi}
  144. \def\represent@counter#1#2{
  145.     \edef\cs@e{@\if#2iroman\else
  146.        \if#2IRoman\else \if#2alcascii\else
  147.        \if#2Aucascii\else arabic\fi\fi\fi\fi}
  148.     \csarg\edef{\counter@repr{#1}}{\CSname{\cs@e}}
  149.     \csarg\edef{#1Counter}%
  150.       {\CSname{\counter@repr{#1}}\counter@@name{#1}}
  151.     }
  152. \def\@SynonymCounter#1#2{\edef\cs@b{%
  153.    \nxp\let\counter@@name{#1}=\counter@@name{#2}
  154.    \nxp\let\CSname{#1Counter}=\CSname{#2Counter}
  155.    \nxp\let\CSname{#1@RL}=\CSname{#2@RL}}
  156.     \cs@b
  157.     }
  158.  
  159. \@GenericOption{sharecounter}
  160.    {\CounterRepresentation:\@name=#1 }<Rev
  161.  
  162. \iSection Governing and resetting
  163.  
  164. A counter can be defined as being governed by another counter;
  165. whenever the other counter is manipulated, this counter is reset.
  166. The implementation is through `reset lists': every counter is added to
  167. the reset list of its governing counter, and whenever a counter is
  168. altered, everything in its reset list is reset.
  169. \Ver>
  170. \def\GoverningCounter:#1=#2 {\if\UndefinedCS{#2@RL}
  171.     \Emessage{No counter defined for `#2'}
  172.     \else\append@to@list{#2@RL}{\\#1;}\fi}
  173. \def\reset@subordinates#1{%
  174.     \def\\##1;{\start@counter{##1}}%
  175.     \the\csname #1@RL\endcsname  \let\\=\relax}<Rev
  176.  
  177. The command \cs{reset@subordinates} is executed by all user level
  178. commands:
  179. \Ver>
  180. \def\StartCounter:#1 {\handle@user@counter{#1}{start}{}}
  181. \def\StepCounter:#1 {\handle@user@counter{#1}{step}{}}
  182. \def\BackStepCounter:#1 {\handle@user@counter{#1}{back@step}{}}
  183. \def\SetCounter:#1=#2 {\handle@user@counter{#1}{set}{#2}}
  184. \def\handle@user@counter#1#2#3%
  185.    {\if\UndefinedCS{\counter@name{#1}}
  186.           \Wmessage{Unknown counter: #1}
  187.     \else \csarg\global{#2@counter}{#1}{#3}%
  188.           \reset@subordinates{#1}\define@reference{#1}%
  189.     \fi}<Rev
  190.  
  191. The system level commands have no further complications.
  192. \Ver>
  193. \def\step@counter#1%
  194.    {\increase@value{\counter@name{#1}}\@ne}
  195. \def\back@step@counter#1%
  196.    {\increase@value{\counter@name{#1}}\m@ne}
  197. \def\start@counter#1%
  198.    {\set@value{\counter@name{#1}}\z@}
  199. \def\set@counter#1#2%
  200.    {\set@value{\counter@name{#1}}{#2}\relax}<Rev
  201.  
  202. \ImpNoteStop
  203.  
  204. \Section[sec:font] Font selection
  205.  
  206. In \Lollipop, choosing a font is done through three parameters:
  207. \Description\item Typeface
  208. A collection of related styles and sizes. The typeface is set by the
  209. command \refcs{Typeface}.
  210. \item Style
  211. Italic, bold, roman, typewriter. You know. The style is set by the 
  212. command \refcs{Style}.
  213. \item PointSize
  214. The size of a font in typographical points ($72.27$ per inch).
  215. The pointsize is set by the command \refcs{PointSize}.
  216. \>
  217.  
  218. The most common change of font is a change in style. Therefore,
  219. issuing a command such as \Ver>\Style:bold<Rev immediately changes
  220. the font to the bold of the current typeface in the current pointsize.
  221.  
  222. However, issuing a command such as \Ver>\Typeface:GoudyOldStyle<Rev
  223. or \Ver>\PointSize:28<Rev will not change the font, since such
  224. changes are usually accompanied by a change in style. In case that an
  225. immediate switch is necessary, the command 
  226. \refcs{SetFont} can be given.
  227. This evaluates the current value of the typeface, style, and
  228. pointsize commands, and sets the font accordingly.
  229.  
  230. A number of typeface names have been predefined in \Lollipop,
  231. however, in order to print them your printer (software) must have them
  232. available.
  233.  
  234. \Example
  235. \SerifFace \PointSize:12 
  236. \Style:roman This \Style:italic sentence \PointSize:10 has
  237. \SetFont way \SansFace \Style:roman too \SetFont many 
  238. \PointSize:12 \SetFont font \Style:bold changes.
  239. \ExampleStop 
  240.  
  241. (The commands \cs{SerifFace} and \cs{SansFace} are defined in
  242. the master file of this manual, and serve to make this manual
  243. formattable on any system.)
  244.  
  245. \SubSection Relative size changes
  246.  
  247. Apart from setting the pointsize explicitly, it is also possibly to
  248. make size changes relative to the current size. For instance,
  249. \refcs{PointSizeLarger} and \refcs{PointSizeSmaller} with an optional
  250. argument indicating the size of the change can be used. These
  251. commands are not cumulative.
  252.  
  253. \Example
  254. \SerifFace
  255. \PointSize:9 \SetFont Every once in a while,\SaveFont
  256. \PointSizeLarger[2] shouting \PointSizeLarger helps.
  257. \PointSizeSmaller[2]But most of the times it doesn't.
  258. \RestoreFont Unfortunately.
  259. \ExampleStop
  260.  
  261. Similar to the changes in mathematics mode to script and scriptscript
  262. size, the same relative changes are available in text mode through
  263. the control sequences \refcs{script} and \refcs{scriptscript}. 
  264. The control
  265. sequence \refcs{normal} can be used to restore the default size.
  266.  
  267. Here is one application of such relative changes:
  268. \Ver>
  269. L\kern -.3em\raise .35ex\hbox {\script A}\kern -.1em\TeX<Rev
  270. which gives definition of the \LaTeX\ logo that is independent
  271. of typeface, size and style.
  272.  
  273. The relative sizes of script and scriptscript fonts are by default at
  274. $70\%$ and $50\%$, but they can be set explicitly by
  275. \Ver>\PointSizeScriptSizes:10=10,7,5<Rev
  276. This also gives the possibility to have the \cs{normal} size to be
  277. different from the surrounding pointsize.
  278.  
  279. \SubSection Typeface definition
  280.  
  281. Defining a typeface means telling \Lollipop\ how the external font
  282. name, that is, the name of the \n{tfm} file, is to be constructed from
  283. the internal parameters. The command \refcs{DefineTypeface} takes four
  284. parameters and an optional fifth. The parameters are in sequence
  285. \Enumerate\item The internal name of the typeface: the name that is
  286. given to the \cs{Typeface} command.
  287. \item The root of the external file name. It is assumed that all
  288. font names of different styles and sizes are constructed by appending
  289. characters to this base.
  290. \item Suffixes corresponding to the styles that are available.
  291. \item Suffixes corresponding to the sizes that are available.
  292. \>
  293.  
  294. Here is the definition of the Computer Modern typeface:
  295.  
  296. \Ver>
  297. \DefineTypeface{ComputerModern}{cm}
  298.     {roman:r; slant:sl; italic:ti; mitalic:mi; bold:bx; tty:tt;
  299.      default:r;}
  300.     {<6:5; <7:6; <8:7; <9:8; <10:9; <11:10; 
  301.      <12:10 \scaled\magstephalf;
  302.      <14:10 \scaled\magstep1; <16:10 \scaled\magstep2;
  303.      <20:10 \scaled\magstep3; >19:10 \scaled\magstep4;
  304.      default:10;}<Rev
  305.  
  306. Actually, not all combinations of styles and sizes are available.
  307. That's where the optional argument comes in. This argument can be
  308. used to specify with \TeX\ conditionals exceptional style/size
  309. combinations. Here some trickery is needed: internally the size is
  310. stored in \cs{F@size}, and in order to use this parameter we need to
  311. make the at-sign a letter temporarily.
  312.  
  313. \Ver>\makeatletter
  314. \DefineTypeface{Compu ...
  315.     ...
  316.     default:10;}
  317.     [\ifStyle:italic \ifnum\F@size<7 ti7\fi\fi
  318.      \ifStyle:tty \ifnum\F@size<8 tt8\fi\fi]<Rev
  319.  
  320. For other typefaces specifying the size suffix may be much easier
  321. than for Computer Modern. For instance, here is the definition of the
  322. PostScript Helvetica typeface.
  323.  
  324. \Ver>\makeatletter
  325. \DefineTypeface{psHelvetica}{helv}
  326.     {roman:; italic:i; mitalic:i; bold:b; default:;}
  327.     {default: at \F@size pt;}
  328. \makeatother<Rev
  329.  
  330.  
  331. \SubSection Math fonts
  332.  
  333. Switching styles in math mode should be possible:
  334. $${\Style:bold x\Style:roman y}z$$
  335.  
  336. \SubSection Other font matters
  337.  
  338. The combination \refcs{SaveFont} with a subsequent 
  339. \refcs{RestoreFont} can
  340. be used to save and restore the current font.
  341.  
  342. An abbreviation for a font can be defined by
  343. \Ver>\DefineFont:name=face,size,style<Rev
  344.  
  345. Even if you don't use Computer Modern as your main typeface, the
  346. typewriter style is not bad, so a control sequence
  347. \Ver>
  348. \def\tt{\Typeface:ComputerModern \Style:tty }<Rev
  349. has been given that makes \refcs{tt} always refer to the
  350. \n{cmtt} fonts. You're at liberty to change this, of course.
  351.  
  352. \Section Baselineskip
  353.  
  354. Corresponding to a font size usually the baseline skip has to change.
  355. By default a fixed ratio of~$1.2$ for this is taken, for instance
  356. using a 12~point baseline skip for 10~point fonts. Changing the ratio
  357. can be done by
  358. \Ver>\BaselineSkipPointSizeRatio:1.3<Rev
  359.  
  360. If only for some specific size the baseline skip has to deviate from
  361. the default ratio, then this can be set by
  362. \Ver>\SetPointSizeBaselineSkip:9=12<Rev
  363.  
  364. \Section[sec:indent:control] Indentation Control
  365.  
  366. \SubSection To indent or not to indent
  367.  
  368. In most documents there is a general rule that all paragraphs indent
  369. unless a certain condition, or that they do not indent unless certain
  370. special conditions hold. For \Lollipop\ documents this is determined
  371. by the command \refcs{AlwaysIndent}, with values \n{yes}/\n{no}.
  372.  
  373. To override this default setting a command \refcs{Indent}
  374. (with values \n{yes}/\n{no}) exists, but that is mostly useful as an
  375. option in generic constructs, and even there it will not be used much.
  376. See section~\ref[sec:opt:indent] for options relating to indentation.
  377.  
  378. Important: never set \cs{parindent} to zero. Preventing indentation
  379. globally should be done through \ver>\AlwaysIndent:no>.
  380.  
  381. \SubSection[sec:basic-indent] Basic indent
  382.  
  383. There is a quantity \refcs{basicindent} that is used on the first
  384. indentation level (see the next section for an explanation of these
  385. levels). At the start of a document it is set to the then current
  386. value of \cs{parindent}. You can override that by
  387. \refcs{BasicIndentIsSet}: give
  388. \Ver>\BasicIndentIsSet:no<Rev before the \cs{Start} command.
  389.  
  390. This way, setting \cs{parindent} in the style definition controls the
  391. indentation in the whole document.
  392.  
  393. \SubSection Indentation levels; indentation size
  394.  
  395. When \Lollipop\ decides that text should be indented, it refers to a
  396. list of indentations for the exact amount. This list contains
  397. indentation amounts for each `level' of indentation: initially the
  398. level is one, and if you nest constructs that indent (for instance
  399. using a list inside a list) the level goes up one step per nested
  400. construct.
  401.  
  402. By
  403. default the indentation on different levels is a fraction of the
  404. \cs{basicindent}. Thus you can regulate the indentation on
  405. all levels simultaneously by resetting the \cs{basicindent}.
  406.  
  407. \Example
  408. \Distance:basicindent=15pt
  409. \DefineList:TestList item:left itemCounter item:stop Stop
  410. \TestList\item Level one \TestList\item Level two
  411. \TestList\item Level three\>]
  412. \Distance:basicindent=25pt
  413. \TestList\item Level one \TestList\item Level two
  414. \TestList\item Level three\>]
  415. \ExampleStop
  416.  
  417. The amount of
  418. indentation on a certain level can be set explicitly with
  419. \refcs{LevelIndent}.
  420.  
  421. \Example
  422. \Distance:basicindent=15pt
  423. \LevelIndent:2=20pt
  424. \DefineList:TestList item:left itemCounter item:stop Stop
  425. \TestList\item Level one \TestList\item Level two
  426. \TestList\item Level three\>]
  427. \ExampleStop
  428.  
  429. \SubSection Manipulating the indentation level
  430.  
  431. Every once in a while it can be useful to move to a next indentation
  432. level, or to return to a previous level. For this
  433. the two commands \refcs{PushIndentLevel} and \refcs{PopIndentLevel} are
  434. available. One application is for `interrupted lists':
  435.  
  436. \Example
  437. \Itemize\item One
  438. {\par\PopIndentLevel Interrupted text!\par}
  439. \item Two\>
  440. \ExampleStop
  441.  
  442. See chapter~\ref[chap:external-files] for examples of the use of
  443. \cs{PushIndentLevel}
  444.  
  445. \Section Margins
  446.  
  447. By default, \Lollipop\ tries to keep straight margins. You can change
  448. its mind about that by
  449. \Ver>\FlushRight:no \FlushLeft:no<Rev
  450. If the margins are not flush, the stretchable white space used
  451. is \refcs{rightmarginstretch} and \refcs{leftmarginstretch}.
  452.  
  453. \Section White Space
  454.  
  455. White space can be indicated by \refcs{hwhite} and \refcs{vwhite}.
  456. They are often useful in style definitions. Use:
  457. \Ver>\vwhite:15pt<Rev
  458. or \Ver>\hwhite:{15pt minus 3pt}<Rev
  459. for stretch and shrink. The command \refcs{white} is independent
  460. of the mode, and it expands to \cs{hwhite} or \cs{vwhite} 
  461. depending on the prevailing mode of \TeX.
  462.  
  463. The command \refcs{fillup} is mostly useful in style definitions:
  464. it tries to fill up as much white space as is possible.
  465. For instance
  466. \Ver>    line:start litteral:foo fillup litteral:bar line:stop<Rev
  467. will push \n{foo} and \n{bar} as far apart as is possibly
  468. within the margins.
  469.  
  470. \ImpNote
  471. All three control sequences \cs{white}, \cs{hwhite}, \cs{vwhite}
  472. have internal equivalents, for instance
  473. \Ver>\def\white:#1 {\@white{#1}}<Rev
  474. \ImpNoteStop
  475.  
  476. \Section[sec:com:distance] Distances
  477.  
  478. The command \refcs{Distance} can be used 
  479. to declare a name for a certain
  480. distance, or in more correct \TeX nical lingo, for a certain piece of
  481. glue. For instance, declaring that
  482.  \Ver>\Distance:oneline=15pt<Rev
  483. means that you can specify in some constructs
  484. \Ver>\DefineFoo:Bar whitebefore:oneline whiteafter:oneline<Rev
  485. If you change your mind later about the value of \n{oneline} you only
  486. need to change one line in the style definition.
  487.  
  488. Since the second parameter of \cs{Distance} is bounded by a space (or
  489. the line end, whatever comes first), you can specify stretchable
  490. distances by enclosing \n{plus} and \n{minus} parts in braces:
  491. \Ver>\Distance:oneline={15pt plus 2pt minus 3pt}<Rev
  492.  
  493. The effect of \cs{Distance} is global. Let me know if you don't
  494. like it.
  495.  
  496. \SubSection Distance synonyms
  497.  
  498. Another use of \cs{Distance} is to define one distance as a synonym
  499. of another. This may come in handy if you use some basic distance,
  500. such as \n{oneline} for several purposes. Example: if you specify
  501. \Ver>\Distance:whitebefore=oneline<Rev
  502. than the whitespace before a construct will be taken to be
  503. \n{oneline} if you don't use the \opt{whitebefore} option explicitly.
  504.  
  505. \SubSection[sec:adapt-distance] Adaptive distances
  506.  
  507. Suppose you want to declare a section heading as
  508.  \Ver>\DefineHeading:Section ...
  509.   block:start [...] fillupto:widelabel title<Rev
  510. where \cs{widelabel} is the width of the widest label that
  511. occurs in your document. This requires just a tad of \TeX\
  512. programming. Just copy the details from the example below, which is
  513. the definition of \cs{Section} in this manual.
  514.  
  515. By declaring something a \refcs{AdaptiveDistance} instead of just
  516. \cs{Distance} its value gets written to the \file{.aux} file at the
  517. end of the run, and restored in the next run. The second argument is
  518. simply the default value, in case you don't have an auxiliary file
  519. yet. 
  520.  
  521. \Ver>\AdaptiveDistance:WidestLabel=15pt
  522. \def\MeasureLabel{\ifdim\BlockWidth>\WidestLabel
  523.     \global\WidestLabel\BlockWidth\fi}
  524. \DefineHeading:Section
  525.     whitebefore:{20pt plus 2pt} whiteafter:14pt
  526.     line:start PointSize:14 Style:italic 
  527.         block:start block:start ChapterCounter . SectionCounter
  528.               Spaces:1 block:stop MeasureLabel
  529.               fillupto:WidestLabel
  530.         title line:stop
  531.     external:contents title external:stop
  532.     label:start ChapterCounter . SectionCounter label:stop
  533.     Stop<Rev
  534.  
  535. Note how two nested blocks are used: the first is to measure the
  536. label, and the width is written to the adaptive distance by means of
  537. a small macro; the second block is to fill out the white space.
  538.  
  539. If you want the paragraph indentation to depend on this adaptive
  540. width, you can give
  541.  \Ver>\StartCommand{\Distance:parindent=WidestLabel }<Rev
  542. to set \cs{parindent} at the start of the document.
  543. See section~\ref[sec:doc-start-stop] and~\ref[sec:basic-indent].
  544.  
  545. \Section[sec:InputFile] Input Files
  546.  
  547. Parts of a document can be loaded by
  548. \Ver>\InputFile:parta
  549. \InputFile:partb<Rev
  550. et cetera.  A~document part loaded by \refcs{InputFile} always starts
  551. on a new page. In section~\ref[sec:ref-local] it was already
  552. explained how local references for such files can be created.
  553.  
  554. Perhaps most importantly, loading files this way provides a form of
  555. error checking; \Lollipop\ checks at the end of such a file whether all
  556. used constructs are balanced properly.
  557.  
  558.  
  559. \Section[sec:tests] Tests
  560.  
  561. Users can define tests:
  562. \Ver>\DefineTest:SomethingTheMatter<Rev
  563. which are set like any other test:
  564. \Ver>\SomethingTheMatter:yes<Rev
  565. or \Ver>\SomethingTheMatter:no<Rev
  566.  
  567. Tests can be used as \Ver>\ifSomethingTheMatter ... \else ... \fi<Rev
  568. Like any other conditional, test can be used inside constructs.
  569. \Ver>\DefineFoo:Bar [...]
  570.  ifSomethingTheMatter [...] fi
  571.  [...] Stop<Rev
  572.  
  573. \Section Goodies
  574.  
  575. \SubSection[sec:everypar] \cs{everypar}
  576.  
  577. The \TeX\ primitive \cs{everypar} should note be used any more.
  578. Instead use the command \refcs{EveryParagraph} as if you are setting
  579. a token list:
  580.  \Ver>\EveryParagraph{ ... }<Rev
  581.  
  582. \SubSection Allocation
  583.  
  584. The commands \refcs{SaveAlloc} and subsequent \refcs{RestoreAlloc} save and
  585. reset the internal \TeX\ allocation counters.
  586.  
  587. \ImpNote Obscure goodies
  588.  
  589. \iSection[imp:new:dummy] Dummy commands
  590.  
  591. For purposes such as termination of an argument it is usefule to have
  592. control sequences that have a meaning different from any other
  593. control sequence. The command \refcs{NewDummy} gives such control
  594. sequences. The call \ver>\NewDummy{some}> defines \cs{some}, or gives
  595. an error msg at redefinition.
  596.  
  597. \ImpNoteStop
  598.